﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Bussines.BMSeguridad;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class BMSeguridad_AdministracionPermisos : GenericPage
{
    private Permisos permisoBuscado
    {
        get
        {
            if (ViewState["permisoBuscado"] != null)
            {
                return (Permisos)ViewState["permisoBuscado"];
            }
            else
            {
                return new Permisos();
            }
        }
        set
        {
            ViewState["permisoBuscado"] = value;
        }
    }

    private List<Permisos> permisosSource
    {
        get
        {
            return (List<Permisos>)ViewState["permisosSource"];
        }
        set
        {
            ViewState["permisosSource"] = value;
        }
    }

    private Permisos permisoActual
    {
        get
        {
            if (ViewState["permisoActual"] != null)
                return (Permisos)ViewState["permisoActual"];
            else
                return null;
        }
        set
        {
            this.ViewState["permisoActual"] = value;
        }
    }

    #region Controles

        /// <summary>
        /// Controla el evento de Carga dela página
        /// CB 19-07-2007
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                SetearCultura();
                SetearConexion();
                if (!this.IsPostBack)
                {
                    //AutenticacionUsuario();
                    //int iId_Usuario = System.Convert.ToInt32(Session["Id_Usuario"]);
                    //string srtPermiso = ControlPermisos((int)UI_Permissions.frmPermisos, iId_Usuario);
                    //if (srtPermiso != "S")
                    //{
                    //    Response.Redirect("~/Error.aspx", false);
                    //}
                    //else
                    //{
                    BMPermisos _presenter = new BMPermisos(Connection);
                    permisosSource = _presenter.BMPermisosGetAll();
                    //}
                }
            }
            catch (Exception ex)
            {
                ErrorUI(ex);
            }
        }


        /// <summary>
        /// Responde al evento Click del botón Buscar
        /// Verifica filtros 
        /// CB 19-07-2007
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                BMPermisos _presenter = new BMPermisos(Connection);
                Permisos oPermiso = new Permisos();
                oPermiso.Nombre_Permiso = txtPermiso.Text.Trim();
                oPermiso.Descripcion_Permiso = txtDescripcion.Text.Trim();
                oPermiso.Nombre_Formulario = "";

                // Guarda las características de la búsqueda
                permisoBuscado = oPermiso;

                permisosSource = _presenter.BMPermisosSearch(oPermiso);
            
                GridDataBound();
            }
            catch (Exception ex)
            {
                ErrorUI(ex);
            }

        }

        /// <summary>
        /// Responde al Evento btnNuevo click 
        /// se redirecciona a la Interfaz gestión de Permiso
        /// se envía por Sesión, una Etidad nula
        /// CB  12-07-2007
        /// </summary>
        /// <returns></returns>
        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {           
                    Permisos permiso = new Permisos();
                    permiso = null;

                    Session["Permiso"] = permiso;
                    Response.Redirect("AdministracionPermisosTab.aspx", false);
            }
            catch (Exception ex)
            {
                ErrorUI(ex);
            }
        }

        /// <summary>
        /// Responde al evento Click del botón Cancelar. Redirecciona a la
        /// página por defecto del módulo de seguridad.
        /// 
        /// Moficado por: CB  Fecha: 12-07-2007
        /// Motivo del Cambio:
        /// 
        /// </summary>
        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("../Default.aspx", false);
        }


        /// <summary>
        /// Responde al evento 'Eliminar' de la Grilla dgPermisos
        /// se eliminará el elemento seleccionado de la Tabla Seguridad.Permisos
        /// baja lógica: permiso.Fecha_Hasta = System.DateTime.Now(); 
        /// CB 12-07-2007
        /// </summary>
        protected void dgPermisos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                BMPermisos _presenter = new BMPermisos(Connection);
                Permisos permiso = new Permisos();
                permisoActual = permiso;
                Label label = (Label)dgPermisos.Rows[e.RowIndex].Cells[0].FindControl("Id_Permiso");
                permisoActual.Id_Permiso = int.Parse(label.Text.Trim());
                permiso = _presenter.BMPermisosGetOne(permisoActual);
                permiso.Fecha_Hasta = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));
                _presenter.BMPermisosDelete(permiso);

                // Actualiza la grilla
                permisosSource = _presenter.BMPermisosSearch(permisoBuscado);
                GridDataBound();
            }
            catch (Exception ex) { ErrorUI(ex); }
        }

        /// <summary>
        /// Responde al evento 'Seleccionar' de la Grilla dgPermisos
        /// permite la EDICION del elemento seleccionado de la Tabla Seguridad.Permisos
        /// redirecciona a la interfaz de Gestión de Permiso
        /// transfiere por Sesión, el objeto Permiso a editar
        /// CB 12-07-2007
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
       protected void dgPermisos_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                BMPermisos _presenter = new BMPermisos(Connection);
                Permisos permiso = new Permisos();
                permiso.Id_Permiso = (int)dgPermisos.SelectedDataKey.Value;
                permisoActual = permiso;
                permiso = _presenter.BMPermisosGetOne(permisoActual);

                Session["Permiso"] = permiso;
                Response.Redirect("AdministracionPermisosTab.aspx", false);
            }
            catch (Exception ex)
            {
                ErrorUI(ex);
            }
        }

        /// <summary>
        /// Controla evento cambio de página de la grilla dgPermisos
        /// CB 19-07-2007
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void dgPermisos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            dgPermisos.PageIndex = e.NewPageIndex;
            GridDataBound();
        }


    #endregion


    #region Metodos
   
        /// <summary>
        /// Carga datos en la grilla dgPermisos
        /// CB  19-07-2007
        /// </summary>
        private void GridDataBound()
        {

            dgPermisos.DataSource = permisosSource;
            dgPermisos.DataBind();

        }

        /// <summary>
        /// Cancela volviendo a la página de donde fue llamado
        /// CB 23-07-2007
        /// </summary>
        /// <returns></returns>
        private void Cancelar()
        {
            try
            {
                permisoActual = null;
                Response.Redirect("AdministracionPermisos.aspx", false);
            }
            catch (Exception ex) { ErrorUI(ex); }
        }
   
    #endregion

}


